package view;


import dao.OrderDAO;
import dao.ProductDAO;
import model.Order;
import model.Product;
import model.User;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;

/**
 * 主界面类，提供用户操作入口
 */
public class MainFrame extends JFrame {
    private User currentUser;          // 当前登录用户
    private JLabel welcomeLabel;       // 欢迎标签
    private JButton productListButton; // 商品列表按钮
    private JButton orderListButton;   // 订单列表按钮
    private JButton logoutButton;      // 退出登录按钮
    private ProductDAO productDAO;     // 商品数据访问对象
    private OrderDAO orderDAO;         // 订单数据访问对象

    /**
     * 构造方法，初始化主界面
     * @param user 当前登录用户
     */
    public MainFrame(User user) {
        currentUser = user;
        productDAO = new ProductDAO();
        orderDAO = new OrderDAO();

        // 设置窗口标题和大小
        setTitle("在线购物系统 - 主界面");
        setSize(500, 400);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);

        // 创建面板并设置布局
        JPanel panel = new JPanel();
        panel.setLayout(new BorderLayout());
        panel.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));

        // 创建欢迎标签
        welcomeLabel = new JLabel("欢迎，" + user.getUsername() + "！");
        welcomeLabel.setHorizontalAlignment(SwingConstants.CENTER);
        welcomeLabel.setFont(new Font("Arial", Font.BOLD, 16));

        // 创建按钮面板并设置布局
        JPanel buttonPanel = new JPanel();
        buttonPanel.setLayout(new GridLayout(3, 1, 10, 10));

        // 创建商品列表按钮并添加事件监听器
        productListButton = new JButton("商品列表");
        productListButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                // 打开商品列表界面
                new ProductListFrame(currentUser, productDAO);
            }
        });

        // 创建订单列表按钮并添加事件监听器
        orderListButton = new JButton("订单列表");
        orderListButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                // 打开订单列表界面
                new OrderListFrame(currentUser, orderDAO);
            }
        });

        // 创建退出登录按钮并添加事件监听器
        logoutButton = new JButton("退出登录");
        logoutButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                // 提示确认退出
                int option = JOptionPane.showConfirmDialog(MainFrame.this, "确定要退出登录吗？", "确认", JOptionPane.YES_NO_OPTION);
                if (option == JOptionPane.YES_OPTION) {
                    // 关闭主界面，返回登录界面
                    dispose();
                    new LoginFrame().setVisible(true);
                }
            }
        });

        // 将按钮添加到按钮面板
        buttonPanel.add(productListButton);
        buttonPanel.add(orderListButton);
        buttonPanel.add(logoutButton);

        // 将欢迎标签和按钮面板添加到面板
        panel.add(welcomeLabel, BorderLayout.NORTH);
        panel.add(buttonPanel, BorderLayout.CENTER);

        // 将面板添加到窗口
        add(panel);

        // 显示主界面
        setVisible(true);
    }
}